<?php

class Cursa_Model extends CI_Model {

    function grabarCursa($parameters) {
        $ide=0;
        $this->db->trans_start();
        $insert = array(
            "periodos_lectivos_ide_lec" => $parameters['periodos_lectivos_ide_lec'],
            "ide_car" => $parameters['ide_car'],
            "ide_pen" => $parameters['ide_pen'],
            "ide_cic" => $parameters['ide_cic'],
            "materia_ide_mat" => $parameters['materia_ide_mat'],
            "docente_ide_doc" => $parameters['docente_ide_doc'],
            "matriculas_id_matr" => $parameters['matriculas_id_matr'],
            "seccion" => $parameters['seccion'],
            "paralelo" => $parameters['paralelo'],
            "estudiante_ide_est" => $parameters['estudiante_ide_est'],
            "estado_cur" => $parameters['estado_cur'], // 0 - activa, 1 pendiente ,2 - aprobada, 3  -reprobada, 4 - arrastre, 5 -materias, 6-convalidac
            "cant_cur" => $parameters['cant_cur'], //numero veces que reprueba 
            "observa_cur" => $parameters['observa_cur'],
            "cupo_cur" => $parameters['cupo_cur'],
            "reasig_arrastre_cur" => $parameters['reasig_arrastre_cur'],
            "eliminado" => $parameters['eliminado']);
        $this->db->insert("cursa", $insert);
        $ide=$this->db->insert_id();
        $this->db->trans_complete();
        return $ide;
    }

    function actualizarDistributivo($parameters) {
        $this->db->trans_start();
        $update = array("estudiante_ide_est" => $parameters['estudiante_ide_est'],
            "fechapre_matr" => $parameters['fechapre_matr'],
            "fecha_matr" => $parameters['fecha_matr'],
            "estado_matr" => $parameters['estado_matr'],
            "nro_matr" => $parameters['nro_matr'],
            "inscrip_matr" => $parameters['inscrip_matr'],
            "tipo_matr" => $parameters['tipo_matr'],
            "observ_mat" => $parameters['observ_mat'],
            "eliminado" => 0);

        $this->db->where("ide_lec", $parameters['ide_lec']);
        $this->db->where("ide_mat", $parameters['ide_mat']);
        $this->db->where("seccion", $parameters['seccion']);
        $this->db->where("paralelo", $parameters['paralelo']);


        $this->db->update("matriculas", $update);
        $this->db->trans_complete();
    }

    function Modifica_Secc_Paralelo($parameters) {
        
        $this->db->trans_start();
        $update = array(
            "docente_ide_doc" => $parameters['docente_ide_doc'],
            "seccion" => $parameters['seccion'],
            "paralelo" => $parameters['paralelo']);

        $this->db->where("materia_ide_mat",$parameters['materia_ide_mat']);
        $this->db->where("matriculas_id_matr", $parameters['matriculas_id_matr']);


        $this->db->update("cursa", $update);
        $this->db->trans_complete();
    }    
//
    function eliminarCursa($id_matr) {
        $this->db->trans_start();
        $update = array("eliminado" => 1);
        $this->db->where("matriculas_id_matr", $id_matr);
        $this->db->update("cursa", $update);
        $this->db->trans_complete();
    }

    function eliminaFisicaCursa($id_matr) {
        $this->db->trans_start();
        $this->db->where("matriculas_id_matr", $id_matr);
        $this->db->delete("cursa");
        $this->db->trans_complete();
    }
    function eliminaFisicaCursaMat($ide_cur) {
        $this->db->trans_start();
        $this->db->where("ide_cur", $ide_cur);
        $this->db->delete("cursa");
        $this->db->trans_complete();
    }    

 

    function getCursaDistributivo($ide_matr) {
        $this->db->select('ciclos.codigo_cic,ciclos.ide_cic, ciclos.nombre_cic, materia.ide_mat,materia.codigo_mat
         , materia.nombre_mat, materia.creditos_mat,materia.tipomat_mat, persona.apellido_pers, persona.nombre_pers,
         cursa.materia_ide_mat,cursa.docente_ide_doc,cursa.estado_cur,cursa.cupo_cur,cursa.ide_cur,persona.ide_pers');
        $this->db->distinct();
        $this->db->from('carrera');
        $this->db->join('pensum', 'carrera.ide_car = pensum.ide_car', 'inner');
        $this->db->join('ciclos', 'pensum.ide_pen = ciclos.ide_pen', 'inner');
        $this->db->join('materia', 'ciclos.ide_cic = materia.ciclos_ide_cic', 'inner');
        $this->db->join('cursa', 'cursa.materia_ide_mat = materia.ide_mat', 'inner');
        $this->db->join('docente', 'cursa.docente_ide_doc = docente.ide_doc', 'inner');
        $this->db->join('persona', 'docente.persona_ide_pers = persona.ide_pers', 'inner');
        $this->db->where('cursa.matriculas_id_matr', $ide_matr);
 
        $this->db->where('cursa.eliminado', 0);
        $this->db->order_by("ciclos.codigo_cic");
        $this->db->order_by("cursa.seccion");
        $this->db->order_by("cursa.paralelo");
        $this->db->order_by("materia.codigo_mat");
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $query->free_result();
            return $data;
        } else {
            return null;
        }
    }

    function getDatosCursa($id_matr) {
        $this->db->distinct();
        $this->db->from('cursa');
        $this->db->where('matriculas_id_matr', $id_matr);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
        }
        $query->free_result();
        return $data;
    }

    function actualizaCupo($cupo,$id_matr) {
        $this->db->trans_start();
        $update = array("cupo_cur" => $cupo);
        $this->db->where("matriculas_id_matr", $id_matr);
        $this->db->update("cursa", $update);
        $this->db->trans_complete();
    }
    function actualizaSeccion($seccion,$id_matr) {
        $this->db->trans_start();
        $update = array("seccion" => $seccion);
        $this->db->where("matriculas_id_matr", $id_matr);
        $this->db->update("cursa", $update);
        $this->db->trans_complete();
    }
    function actualizaParalelo($paralelo, $id_matr) {
        $this->db->trans_start();
        $update = array("paralelo" => $paralelo);
        $this->db->where("matriculas_id_matr", $id_matr);
        $this->db->update("cursa", $update);
        $this->db->trans_complete();
    }

        function actualizaEstado($estado) {
        $this->db->trans_start();
        $update = array("estado_cur" => $estado['estado_cur']);
        $this->db->where("materia_ide_mat", $estado['materia_ide_mat']);
        $this->db->where("matriculas_id_matr", $estado['matriculas_id_matr']);
        
        $this->db->update("cursa", $update);
        $this->db->trans_complete();
    }


    function getCupo($ide_lec, $ide_car, $ide_pen, $ide_ciclo, $seccion, $par) {
        $this->db->trans_start();
        $nro_cup = 0;
        $this->db->select_max('cursa.cupo_cur', 'nro');
        $this->db->from('matriculas');
        $this->db->join('cursa', 'matriculas.id_matr = cursa.matriculas_id_matr', 'inner');
        $this->db->where('cursa.periodos_lectivos_ide_lec', $ide_lec);
        $this->db->where('cursa.ide_car', $ide_car);
        $this->db->where('cursa.ide_pen', $ide_pen);
        $this->db->where('cursa.ide_cic', $ide_ciclo);
        $this->db->where('cursa.seccion', $seccion);
        $this->db->where('cursa.paralelo', $par);
        $this->db->where('(matriculas.inscrip_matr=3 OR matriculas.inscrip_matr=4)');
        //$this->db->or_where('matriculas.inscrip_matr', 4);
        $this->db->where('matriculas.eliminado', 0);
        //opcion puede ser 3 para matriculas de primer ciclo o 4 para todos los demas ciclos
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $nro_mat = $data[0]['nro'];
        }
        $query->free_result();
        $this->db->trans_complete();
        return $nro_mat;
    }

    function getCursaArrastrePracticaTeorica($id_matr,$tipo_mat) {
        $this->db->select('COUNT(cursa.materia_ide_mat) as numero');
        $this->db->distinct();
        $this->db->from('matriculas');
        $this->db->join('cursa', 'matriculas.id_matr = cursa.matriculas_id_matr', 'inner');
        $this->db->join('materia', 'cursa.materia_ide_mat = materia.ide_mat', 'inner');
        $this->db->like('materia.tipomat_mat', $tipo_mat);
        
        $this->db->where('matriculas.id_matr', $id_matr);
        $this->db->or_where('cursa.estado_cur', 4);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $nro_materias = $data[0]['numero'];
        }
        $query->free_result();
        return $nro_materias;

        
    }
        function actualizaDocente($cursa) {
        $this->db->trans_start();
        $update = array("docente_ide_doc" => $cursa['ide_doc']);
        $this->db->where("periodos_lectivos_ide_lec", $cursa['ide_lec']);
        $this->db->where("materia_ide_mat", $cursa['ide_mat']);
        $this->db->where("seccion", $cursa['seccion']);
        $this->db->where("paralelo", $cursa['paralelo']);
        
        
        $this->db->update("cursa", $update);
        $this->db->trans_complete();
    }

       function getCursa_estudiante($reasigna) {
        $this->db->select('ide_cur,estudiante_ide_est,reasig_arrastre_cur');
        $this->db->distinct();
        $this->db->from('cursa');
        $this->db->where('periodos_lectivos_ide_lec', $reasigna['ide_per']);
        $this->db->where('matriculas_id_matr', $reasigna['id_matr']);
        $this->db->where('materia_ide_mat', $reasigna['ide_mat']);
        //opcion puede ser 3 para matriculas de primer ciclo o 4 para todos los demas ciclos
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
        }
        $query->free_result();
        return $data;
    }//reasig_arrastre_cur
        function reasig_arrastre($ide_cur,$valor) {
        $this->db->trans_start();
        $update = array("reasig_arrastre_cur" => $valor);
        $this->db->where("ide_cur", $ide_cur);
        
        $this->db->update("cursa", $update);
        $this->db->trans_complete();
    }
    
    function getDescripcionArrastre($ide_cur) {
        $this->db->select('carrera.nombre_car,ciclos.nombre_cic,arrastre.seccion_arr'
                . ', arrastre.paralelo_arr,materia.nombre_mat,persona.apellido_pers,persona.nombre_pers,ide_arr');
        $this->db->distinct();
        $this->db->from('arrastre');
        $this->db->join('cursa', 'arrastre.ide_cur = cursa.ide_cur', 'inner');
        $this->db->join('carrera', 'arrastre.ide_car_arr = carrera.ide_car', 'inner');
        $this->db->join('ciclos', 'arrastre.ide_cic_arr = ciclos.ide_cic', 'inner');
        $this->db->join('materia', 'arrastre.materia_ide_mat_arr = materia.ide_mat', 'inner');
        $this->db->join('docente', 'arrastre.docente_ide_doc_arr = docente.ide_doc', 'inner');
        $this->db->join('persona', 'docente.persona_ide_pers = persona.ide_pers', 'inner');
        $this->db->where('cursa.ide_cur', $ide_cur);
 
        $this->db->where('cursa.eliminado', 0);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $query->free_result();
            return $data;
        } else {
            return null;
        }
    }
    
    function VerificaCursaSeminario($id_matr,$ide_lec, $ide_car,$ide_ciclo, $seccion, $par) {
        $nro_cup = 0;
        $this->db->select('cursa.ide_cur');
        $this->db->from('matriculas');
        $this->db->join('cursa', 'matriculas.id_matr = cursa.matriculas_id_matr', 'inner');
        $this->db->where('cursa.matriculas_id_matr', $id_matr);
        $this->db->where('cursa.periodos_lectivos_ide_lec', $ide_lec);
        $this->db->where('cursa.ide_car', $ide_car);
        $this->db->where('cursa.ide_cic', $ide_ciclo);
        $this->db->where('cursa.seccion', $seccion);
        $this->db->where('cursa.paralelo', $par);
        $this->db->where('(matriculas.estado_matr=6)');//cursa temporal
        $existe=false;
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            $existe=true;
        }
        $query->free_result();
        return $existe;
    }
    

}

